Analyzing Stack Flows to Compare Java Programs

نویسندگان

  • Hyun-il Lim
  • Taisook Han
چکیده

SUMMARY This paper presents a method for comparing and detecting clones of Java programs by analyzing program stack flows. A stack flow denotes an operational behavior of a program by describing individual instructions and stack movements for performing specific operations. We analyze stack flows by simulating the operand stack movements during execution of a Java program. Two programs for detection of clones of Java programs are compared by matching similar pairs of stack flows in the programs. Experiments were performed on the proposed method and compared with the earlier approaches of comparing Java programs, the Tamada, k-gram, and stack pattern based methods. Their performance was evaluated with real-world Java programs in several categories collected from the In-ternet. The experimental results show that the proposed method is more effective than earlier methods of comparing and detecting clones of Java programs.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Stack Allocating Objects in Java ( Extended Abstract ) ∗

Allocating objects on the stack rather than the heap reduces the overhead of garbage collection and permits further optimizations. This paper presents a simple and fast algorithm for stack allocating a significant fraction of objects for Java programs. Our implementation in an optimizing batch Java compiler demonstrates the benefit of stack allocation by achieving speed improvements of up to 11...

متن کامل

The Need for Predictable Garbage Collection

Modern programming languages such as Java are increasingly being used to write systems programs. By “systems programs,” we mean programs that provide critical services (compilers), are long-running (Web servers), or have time-critical aspects (databases or query engines). One of the requirements of such programs is predictable behavior. Unfortunately, predictability is often compromised by the ...

متن کامل

Points-to Analysis for Java Based on Annotated Constraints

The goal of points-to analysis for Java is to determine the set of objects pointed to by a reference variable or a reference object field. In this paper we present a points-to analysis for Java based on Andersen’s points-to analysis for C [5]. Andersen’s analysis can be implemented efficiently by using systems of set-inclusion constraints and by employing several techniques for constraint repre...

متن کامل

Cost analysis of object-oriented bytecode programs

Cost analysis statically approximates the cost of programs in terms of their inputdata size. This paper presents, to the best of our knowledge, the first approach tothe automatic cost analysis of Object-Oriented bytecode programs. In languagessuch as Java and C#, analyzing bytecode has a much wider application areathan analyzing source code since the latter is often not availabl...

متن کامل

Compiling Constraint Handling Rules to Java: A Reconstruction

In this report, we provide a detailed description of the compilation scheme the K.U.Leuven JCHR system uses to compile CHR to efficient Java code. We start from a relatively straightforward adaptation of the traditional CHR compilation scheme for Prolog, and gradually add all its basic optimizations. Next, we show why this compilation scheme is not suited for compilation to an imperative host l...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:
  • IEICE Transactions

دوره 95-D  شماره 

صفحات  -

تاریخ انتشار 2012